Amazon ECSでDockerコンテナのボリュームサイズを増やす
Amazon ECSのクラスターをEC2で作成後、Dockerコンテナのボリュームサイズを増やす手順です。
まずはデフォルトのコンテナのサイズをSSHして確認したところ9.8GBでした。
$ df -h Filesystem Size Used Avail Use% Mounted on /dev/mapper/docker-259:2-263271-1858fe0abdfdf46d96e1c50ef197c8933ee5859d64dadd04b827832fcbd263eb 9.8G 173M 9.1G 2% / ・・・
それでは9.8GB から20GBに増やしてみます。Dockerコンテナのボリュームサイズを増やすためにはクラスターを作成した際に作られたCloudFormationのスタックを更新します。Management ConsoleでCloudFormationのスタック一覧を開きます。EC2ContainerService-クラスター名 のスタックがあると思いますので、これを選択し更新します。
「現在のテンプレートの使用」にチェックが入っていることを確認し、「次へ」ボタンを押して次に進みます。
スタックのパラメータの画面になります。userdataというパラメータがあるのでここを変更します。
以下のテキストをbase64でエンコードしたものを入れます。7行目のdm.basesize=には変更後のサイズを入れてください。ここでは20GBにしてみます。13行目のECS_CLUSTER=の部分にはクラスター名を入れてください。私はtestにしています。
Content-Type: multipart/mixed; boundary="==BOUNDARY==" MIME-Version: 1.0 --==BOUNDARY== Content-Type: text/cloud-boothook; charset="us-ascii" cloud-init-per once docker_options echo 'OPTIONS="${OPTIONS} --storage-opt dm.basesize=20G"' >> /etc/sysconfig/docker --==BOUNDARY== Content-Type: text/x-shellscript; charset="us-ascii" #!/bin/bash echo ECS_CLUSTER=test >> /etc/ecs/ecs.config echo ECS_BACKEND_HOST= >> /etc/ecs/ecs.config --==BOUNDARY==--
CloudFormationのスタックを更新しただけではまだ変更されていません。EC2を新しく作成する必要があります。スタックの状況がUPDATE_COMPLETEになったら、EC2の画面を開いてクラスターに対応するEC2を削除します。
Autoscalingが設定されているので新しいEC2インスタンスが起動します。起動した後にSSHしてサイズを確認したところ20GBになっていました。
$ df -h Filesystem Size Used Avail Use% Mounted on /dev/mapper/docker-259:2-263274-fcaa095d4bdd64eda7a57194c33e98d616f99b9c80642bb8f71df0e4c4589e8f 20G 181M 19G 1% / ・・・